﻿// See https://aka.ms/new-console-template for more information
string firstFriend = "Scotte";
string secondFriend = "Kendra";
Console.WriteLine($"my friend are {firstFriend} and {secondFriend}");
//1、$和{}一起使用，可以把字符串变量和字符拼接到一起

string greeting = "   Hello World!   ";
Console.WriteLine(greeting);
//裁剪字符串，去掉字符串前面后面空格字符的方法 删除空格字符

string termedgreeting = greeting.TrimStart();
Console.WriteLine(termedgreeting);
//2、TrimStart()   去掉字符串前面空格 的 方法

 termedgreeting = greeting.TrimEnd();
Console.WriteLine(termedgreeting);
//3、TrimEnd()   去掉字符串后面空格

termedgreeting = greeting.Trim();
Console.WriteLine(termedgreeting);
//4、Trim()   去掉字符串前面前面和后面的空格

string sayhello = "Say Hello World";
Console.WriteLine(sayhello);
sayhello = sayhello.Replace("Hello","greeting");
Console.WriteLine(sayhello);
//5、一种方法：字符替换 .Replace()，后面的字符替换前面的字符。

Console.WriteLine(sayhello.ToUpper());
//6、将字符串转换为大写字符

Console.WriteLine(sayhello.ToLower());
//7、将字符串转换为小写字符

string 字符变量1 = "you say greeting, and i say hello";
Console.WriteLine(字符变量1.Contains("goodbye"));
Console.WriteLine(字符变量1.Contains("hello"));
//8、判断字符串中是否包含指定字符的方法，返回True 或 False   查找字符
//另外还有判断字符串开头字符的.Startswith()  和 判断字符串结尾字符的.Endswith()

string 字符变量2 = "abc 123";
Console.WriteLine(字符变量2.Length);
//9、String.Length 属性：获取当前 String 对象中的字符数   结果为7

//10、截取字符串某几位的值
/*
 
 获取字符串后几位数可以通过几种不同的方式来实现。下面将介绍两种常用的方法。

方法一：使用Substring方法
C#中的字符串类提供了Substring方法来截取字符串中的子串。要获取字符串后几位数，只需要使用Substring方法，并将其参数设置为字符串长度减去所需的位数即可。

以下是实现该方法的代码示例：

string str = "hello world";
int n = 5;
string lastNChars = str.Substring(str.Length - n);
在此示例中，我们首先使用字符串“hello world”初始化了str变量。然后，我们指定n变量的值为5，即获取该字符串的最后5个字符。最后，我们使用Substring方法来获取所需的子串，并将结果赋值给lastNChars变量。

方法二：使用String类的Index方法
另一种获取字符串后几位数的方法是使用String类的Index方法。该方法返回字符串中指定字符或子串的最后一次出现的位置。

以下是实现该方法的代码示例：

 */
string str = "hello world";
int n = 5;
string lastNChars = str.Substring(Math.Max(0, str.Length - n));

//方法三：以下示例演示了对 Substring(Int32, Int32) 方法的简单调用，该方法从字符串中提取两个字符，从第六个字符位置开始， (即索引五) 。
String value = "This is a string.";
int startIndex = 5;
int length = 2;
String substring = value.Substring(startIndex, length);
Console.WriteLine(substring);
// The example displays the following output:
//       is
//参考：https://learn.microsoft.com/zh-cn/dotnet/api/system.string.substring?view=net-7.0&devlangs=csharp&f1url=%3FappId%3DDev16IDEF1%26l%3DZH-CN%26k%3Dk(System.String.Substring)%3Bk(DevLang-csharp)%26rd%3Dtrue

//字符串转换为数字 Convert.ToInt16()方法
string abc = "1";
int efg=Convert.ToInt16(abc) + 2;

//以~为分界，将字符串前后的值赋给不同变量
 string strNO = "1~44";
string first;
string end;
int tildeIndex = strNO.IndexOf('~');
if (tildeIndex != -1)
{
    // 找到了~字符
    first = strNO.Substring(0, tildeIndex); // 获取~之前的子字符串
    end = strNO.Substring(tildeIndex + 1); // 获取~之后的子字符串
}
else
{
    // 没有找到~字符
    first = strNO; // first等于整个字符串
    end = strNO; // end也等于整个字符串
}

/*
使用@" "形式声明的字符串称为“逐字字符串”，逐字字符串会将转义字符\当作普通字符对待，例如string str = @"C:\Windows";等价于string str = "C:\\Windows";。
/不是特殊字符
另外，在@" "形式声明的字符串中可以任意使用换行，换行符及缩进空格等都会计算在字符串的长度之中。
 */

String str66 = @"C:\Windows";
String str99 = "C:\\Windows";
Console.WriteLine(str66);
Console.WriteLine(str99);

//生成随机数
Random random = new Random();
//生成200以内随机数
int randomNumber = random.Next(200);